package DTO;

import java.text.ParseException;
import java.util.HashSet;
import java.util.Set;

import model.MercadoLibre;
import model.Publicacion;
import model.Usuario;
import model.VentaDirecta;

public class UsuarioDTO {

	private String _id;
	private String username;
	private String password;
	private String _rev;
	private Set<VentaDirectaDTO> ventasDirectas;
	private Set<SubastaDTO> subastas;
	public UsuarioDTO(Usuario usuario) {
		this.set_id(usuario.getUsername());
		this.setUsername(usuario.getUsername());
		this.setPassword(usuario.getPassword());
		this.setVentasDirectas(new HashSet<VentaDirectaDTO>());
		this.setSubastas(new HashSet<SubastaDTO>());
		this.generateDtosPub(usuario.getPublicaciones());
	}
    public Usuario toModelObject() throws ParseException{
    	
		Usuario usuario = new Usuario(this.getUsername(), this.getPassword(), new HashSet<Publicacion>());
		MercadoLibre.addUsuario(this.get_id(), usuario);
		for (VentaDirectaDTO vd:this.getVentasDirectas()){
			usuario.getPublicaciones().add(vd.toModelObject(usuario));
		}
		for (SubastaDTO sub:this.getSubastas()){
			usuario.getPublicaciones().add(sub.toModelObject(usuario));
		}
    	return usuario;
    	
    }
	public String get_rev() {
		return _rev;
	}

	public void set_rev(String _rev) {
		this._rev = _rev;
	}

	public Set<VentaDirectaDTO> getVentasDirectas() {
		return ventasDirectas;
	}

	public void setVentasDirectas(Set<VentaDirectaDTO> ventasDirectas) {
		this.ventasDirectas = ventasDirectas;
	}

	public Set<SubastaDTO> getSubastas() {
		return subastas;
	}

	public void setSubastas(Set<SubastaDTO> subastas) {
		this.subastas = subastas;
	}

	private void generateDtosPub(Set<Publicacion> publicaciones) {
		for(Publicacion publicacion:publicaciones){
			if (publicacion instanceof VentaDirecta){
			this.getVentasDirectas().add((VentaDirectaDTO)publicacion.toDTO());
			}
			else{
			this.getSubastas().add((SubastaDTO)publicacion.toDTO());
			}
		}
		
	}
	public String get_id() {
		return _id;
	}
	public void set_id(String id) {
		this._id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}
